package cn.fuxi2022.model.empty.applets;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Getter;
import lombok.Setter;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;

/**
 * <p>
 * 社员支付日志表
 * </p>
 *
 * @author Fuxi
 * @since 2022-09-26 16:53:28
 */
@Getter
@Setter
@TableName("group_student_pay_log")
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class GroupStudentPayLog implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.ASSIGN_ID)
    private String id;

    /**
     * 社团学生ID
     */
    @TableField("student_id")
    private String studentId;

    /**
     * 系统自行生成的交易流水号
     */
    @TableField("order_no")
    private String orderNo;

    /**
     * 微信官方的订单号
     */
    @TableField("transaction_id")
    private String transactionId;

    /**
     * 支付类型（1：微信 2：支付宝（不使用））
     */
    @TableField("pay_type")
    private Integer payType;

    /**
     * 订单状态（0：未支付 1：已支付 2：支付关闭 3：超时关闭）
     */
    @TableField("status")
    private Integer status;

    /**
     * 支付完成时间
     */
    @TableField("pay_time")
    @JsonFormat(pattern = "yyyy年MM月dd日 HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime payTime;

    /**
     * 支付金额（分）
     */
    @TableField("total_fee")
    private BigDecimal totalFee;

    /**
     * 微信支付的交易状态
     * SUCCESS—支付成功,
     * REFUND—转入退款,
     * NOTPAY—未支付
     * CLOSED—已关闭
     * REVOKED—已撤销（刷卡支付）
     * USERPAYING--用户支付中
     * PAYERROR--支付失败(其他原因，如银行返回失败)
     */
    @TableField("trade_state")
    private String tradeState;

    /**
     * 其他属性
     * 若当前订单还在支付中，该属性保存前端支付所需参数
     * 若订单成功或失败，则该属性保存订单信息
     */
    @TableField("attr")
    private String attr;

    /**
     * 逻辑删除 1（true）已删除， 0（false）未删除
     */
    @JsonIgnore
    @TableLogic(value = "0", delval = "1")
    @TableField("is_deleted")
    private Integer isDeleted;

    /**
     * 创建时间
     */
    @TableField(value = "gmt_create", fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy年MM月dd日 HH:mm:ss", timezone = "GMT+8")
    private Date gmtCreate;

    /**
     * 更新时间
     */
    @TableField(value = "gmt_modified", fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy年MM月dd日 HH:mm:ss", timezone = "GMT+8")
    private Date gmtModified;
}
